package io.renren.modules.face.utils;

import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
 
import sun.misc.BASE64Encoder;
 
public class ImageUtil {
	/**
	 *二维码路径 
	 */
	private static String QR_CODE = "/home/nginxFile/qr_code/";
	// private static String QR_CODE = "d:/upload/";
 
	/**
	 * PDF中头像路径
	 */
	public static String PDFIMGPATH = "/home/nginxFile/pdfImg/";
	
	/**
	 * 保存文件至本地
	 * 
	 * @param inputStream
	 * @param fileName
	 */
	public static void saveImgPic(InputStream inputStream, String fileName,String ImgPath) {
 
		OutputStream os = null;
		try {
			String path = ImgPath;
			// 2、保存到临时文件
			// 1K的数据缓冲
			byte[] bs = new byte[1024];
			// 读取到的数据长度
			int len;
			// 输出的文件流保存到本地文件
 
			File tempFile = new File(path);
			if (!tempFile.exists()) {
				tempFile.mkdirs();
			}
			os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
			// 开始读取
			while ((len = inputStream.read(bs)) != -1) {
				os.write(bs, 0, len);
			}
 
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// 完毕，关闭所有链接
			try {
				os.close();
				inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
 
	/**
	 * 根据图片链接转为base64数据
	 * 
	 * @param imageUrl
	 * @return
	 * @throws Exception
	 */
	public static String getBase64ByUrl(String imageUrl) throws Exception {
		// new一个URL对象
		URL url = new URL(imageUrl);
		// 打开链接
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
		// 设置请求方式为"GET"
		conn.setRequestMethod("GET");
		// 超时响应时间为5秒
		conn.setConnectTimeout(5 * 1000);
		// 通过输入流获取图片数据
		InputStream inStream = conn.getInputStream();
		// 得到图片的二进制数据，以二进制封装得到数据，具有通用性
		byte[] data = readInputStream(inStream);
		BASE64Encoder encode = new BASE64Encoder();
		String s = encode.encode(data);
		return s;
	}
 
	private static byte[] readInputStream(InputStream inStream) throws Exception {
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		// 创建一个Buffer字符串
		byte[] buffer = new byte[1024];
		// 每次读取的字符串长度，如果为-1，代表全部读取完毕
		int len = 0;
		// 使用一个输入流从buffer里把数据读取出来
		while ((len = inStream.read(buffer)) != -1) {
			// 用输出流往buffer里写入数据，中间参数代表从哪个位置开始读，len代表读取的长度
			outStream.write(buffer, 0, len);
		}
		// 关闭输入流
		inStream.close();
		// 把outStream里的数据写入内存
		return outStream.toByteArray();
	}
 
	/**
	 * 根据url下载图片到本地
	 * 
	 * @param urlList
	 */
	private static void downloadPicture(String urlList, String id) {
		URL url = null;
		try {
			url = new URL(urlList);
			DataInputStream dataInputStream = new DataInputStream(url.openStream());
 
			FileOutputStream fileOutputStream = new FileOutputStream(new File(QR_CODE + id + ".png"));
			ByteArrayOutputStream output = new ByteArrayOutputStream();
 
			byte[] buffer = new byte[1024];
			int length;
 
			while ((length = dataInputStream.read(buffer)) > 0) {
				output.write(buffer, 0, length);
			}
			fileOutputStream.write(output.toByteArray());
			dataInputStream.close();
			fileOutputStream.close();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
	public static void main(String[] args) {
	}
}
